package com.taobao.demo.goods.common;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

/**
 * 类描述：
 * 
 * @author xhy
 * date 2025/10/17 17:47
 * @version 1.0.0
 */
@Data
public class Result<T> {
    private int code;       // 响应码：200成功，500失败
    private String message; // 响应信息
    private T data;         // 响应数据

    public Result(int i, String 操作成功, Object o) {
    }

    // 成功响应（带数据）
    public static <T> Result<T> success(T data) {
        return new Result<>(200, "操作成功", data);
    }

    // 成功响应（无数据）
    public static <T> Result<T> success() {
        return new Result<>(200, "操作成功", null);
    }

    // 失败响应
    public static <T> Result<T> fail(String message) {
        return new Result<>(500, message, null);
    }

    @Override
    public String toString() {
        try {
            return new ObjectMapper().writeValueAsString(this);
        } catch (JsonProcessingException e) {
            return "{\"code\":500,\"message\":\"响应格式错误\",\"data\":null}";
        }
    }
}
